DynamoDB 由 Amazon 在 2012 年發表,是 Key-Value Database 的一種,主打高可擴充性和高可用性,是 AWS 雲端服務的項目之一。DynamoDB 採 一致性雜湊法 將資料分片,搭配 Peer-to-Peer 的複製方式,在資料寫入時預設會建立 N 份資料在不同的節點中(這是可自訂參數,如果需要可以視需求自行調整),發生資料衝突時會以最後寫入的版本為主(last write wins)。
在 DynamoDB 中資料被儲存在 Table
中,存在 Table 中的每一筆資料為 Item
,可儲存的 Item 無數量上限,Item 中又包含 Property
,類似於關聯式資料庫中的 Column,不同的是它們不需要被預先定義好,且每個 Item 中除了作為 Primary Key 的 Properties 以外,其餘 Properties 都是獨立的,不必一致。
DynamoDB 有兩種定義 Primary Key (PK) 的方式,分別為 Partition Key
和 Partition Key + Sort Key
。使用 Partition Key 作為 PK 時,DynamoDB 會使用它作為計算一致性雜湊時的依據,由計算出來的結果決定該 Item 要存放的節點;Partition Key + Sort Key 當作複合 PK 時,資料存放的節點由 Partition Key 進行計算和判斷,這時相同 Partition Key 但不同 Sort Key 的 Items 會被放在一起。不管是使用哪種 Primary Key,在同張 Table 中 PK 都不可以重複。
如同前幾天介紹 Key-Value Database 時提到的,這類資料庫的設計提供的是以 Key 查尋 Value,基本上不提供用其他方式查詢資料,因此如果在 DynamoDB 中真的需要以其他條件查詢,可以透過建立 Secondary Index
達到此目的。
對 DynamoDB 有興趣的人可以在 官方文件、Developer Guide 及 論文 查看更多資訊。